1. Technical Field
The present invention relates to the field of computer systems, and in particular, to systems and methods for bootstrapping computer systems.
2. Background Art
Currently available network technology allows different network nodes, such as various types of computers, to exchange information over a network medium. A networked computer may be designated as a client or a server, depending on its function in the network. For example, servers are relatively powerful computers that can provide programs and data to other computers, e.g. clients, through the network. Servers may provide clients with application programs and in some instances, the operating systems on which the application programs run. In the latter case, the client is configured to retrieve the operating system through its network controller when the client is booted.
A network controller typically includes a read-only-memory (ROM) to store programs governing network-related operations, including network boot operations. When the network controller is designated as the boot device, the client executes a boot program in the network controller ROM to access a suitable operating system from a server on the network. The network controller and its programs are designed for a particular instruction set architecture (ISA), to provide an effective interface between the client and the network.
For currently available network controllers, the network boot operation includes sending a broadcast message over the network to indicate the type of operating system to be loaded. The type of operating system is specified in the network controller when it is manufactured. For example, the network controller""s ROM may specify that the associated client computer is to be booted with an operating system suitable for the IA32 ISA, such as the Windows ""98 or Windows NT operating systems from Microsoft Corporation of Redmond, Wash.
IA64 processors from Intel(copyright) Corporation of Santa Clara Calif., can implement operating systems written in different ISAs. Because currently available network controllers support network booting of operating systems based on a single ISA, they limit the options for network booting of IA64 processors and any other processors that are capable of implementing different ISAs. Providing the computer with a different network controller for each ISA it is capable of implementing solves this problem, but it increases the cost of the network connection hardware significantly. In addition, it requires the development of significant network infrastructure for each ISA, rather than leveraging the infrastructure available for more established ISAs. For example, there has already been significant investment in the development of platform resources such as network controllers based on the IA32 ISA. The IA64 ISA is relatively new, and has not had the benefit of the years of investment devoted to the IA32 ISA.
The present invention addresses these and other issues associated with loading programs from a network.
The present invention provides a mechanism for loading a computer with programs written in different ISAs, using the same network controller. The mechanism may be used to boot a computer with operating systems based on different ISAs.
A computer system in accordance with the present invention includes a processor, a non-volatile memory, and a network controller. The non-volatile memory stores a first boot routine and the network controller stores a second boot routine. When indicated, the processor executes the second boot routine to retrieve a client architecture indication from the non-volatile memory and generate a boot request for the network that includes the client architecture indicator.
For one embodiment of the invention, the second boot routine is written in a first ISA and the client architecture indicator indicates an operating system that is written in a second ISA. The second boot routine includes an interrupt that retrieves the client architecture indicator from a firmware module stored in the non-volatile memory.
A method for booting a processor from a network in accordance with the present invention includes detecting a reset signal, retrieving an indication of an operating system to be booted from a memory location, and generating a network boot request based on the indication. The indication may also be provided by a user in response to a prompt.